#!/bin/bash
set -e

export LC_ALL=en_US.UTF-8

cd /app

# Configure database based on linked container
if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ]; then
  DATABASE_ADAPTER=${DATABASE_ADAPTER:-mysql2}
  DATABASE_HOST=${DATABASE_HOST:-${MYSQL_PORT_3306_TCP_ADDR}}
  DATABASE_PORT=${DATABASE_PORT:-${MYSQL_PORT_3306_TCP_PORT}}
  DATABASE_ENCODING=${DATABASE_ENCODING:-utf8mb4}
elif [ -n "${POSTGRES_PORT_5432_TCP_ADDR}" ]; then
  DATABASE_ADAPTER=${DATABASE_ADAPTER:-postgresql}
  DATABASE_HOST=${DATABASE_HOST:-${POSTGRES_PORT_5432_TCP_ADDR}}
  DATABASE_PORT=${DATABASE_PORT:-${POSTGRES_PORT_5432_TCP_PORT}}
  DATABASE_ENCODING=utf8
fi

USE_GRAPHVIZ_DOT=${USE_GRAPHVIZ_DOT:-${USE_GRAPHVIZ_DOT:-dot}}

# Default to the environment variable values set in .env.example
IFS="="
grep = /app/.env.example | sed -e 's/^#\([^ ]\)/\1/' | grep -v -e '^#' | \
  while read var value ; do
    eval "echo \"$var=\${$var:-\${HUGINN_$var-\$value}}\""
  done | grep -v -e ^= > /app/.env

eval "echo PORT=${PORT:-${PORT:-3000}}" >> .env
eval "echo RAILS_ENV=${RAILS_ENV:-${RAILS_ENV:-production}}" >> .env
eval "echo ON_HEROKU=true" >> .env
eval "echo RAILS_SERVE_STATIC_FILES=true" >> .env

chmod ugo+r /app/.env
source /app/.env

# use default port number if it is still not set
case "${DATABASE_ADAPTER}" in
  mysql2) DATABASE_PORT=${DATABASE_PORT:-3306} ;;
  postgresql) DATABASE_PORT=${DATABASE_PORT:-5432} ;;
  *) echo "Unsupported database adapter. Available adapters are mysql2, and postgresql." && exit 1 ;;
esac

sudo -u huginn -H -E bundle install --without test development --path vendor/bundle

if [ -z $1 ]; then
  sudo -u huginn -H -E bundle exec rake db:create db:migrate RAILS_ENV=${RAILS_ENV}
fi

if [[ -z "${DO_NOT_SEED}" && -z $1 ]]; then
  sudo -u huginn -H -E bundle exec rake db:seed RAILS_ENV=${RAILS_ENV}
fi

if [ -z $1 ]; then
  exec sudo -u huginn -H -E bundle exec unicorn -c config/unicorn.rb
else
  exec sudo -u huginn -H -E bundle exec rails runner "$@" RAILS_ENV=${RAILS_ENV}
fi
